3.1 表达式

学习目标:

  1. 了解 常用的两种测试语句
  2. 掌握 标准测试语句的格式和特点
  3. 说出 常用条件表达式种类
  4. 掌握 2种逻辑表达式的特点和使用场景
  5. 掌握 3种文件表达式的特点和使用场景
  6. 了解 4种数字表达式和2种字符串表达式的特点和使用场景
  7. 应用 2种计算表达式

3.1.1 测试语句

Shell环境根据命令执行后的返回状态值($?)来判断是否执行成功,当返回值为0表示成功,值为其他时表示失败。使用专门的测试工具---test命令,可以对特定条件进行测试,并根据返回值来判断条件是否成立。

测试语句的两种形式:

  • test 条件表
  • [ 条件 ]
格式注意:
  1. 以上两种方法的作用完全一样,后者为常用。
  2. [ ]与内部的条件表达式之间需要有空格。
  3. test跟 [ ] 都是用于测试条件表达式是否成立,条件成立,状态返回值是0,条件不成立,状态返回值是1

不添加空格进行操作报错如下(该命令后面就会学到):

root@ubuntu:~# [-x /bin/bash ]
[-x: command not found

可以看到: 两侧没有空格,就会报错,报错原因是shell将[-x当做了一条可执行的命令,但是在path环境路径下找报道名为[-x的可执行文件

数值比较

主要根据给定的两个值,判断第一个与第二个数的关系,如是否大于、小于、等于第二个数。常见选项如下:

  • n1 -eq n2 相等
  • n1 -gt n2 大于
  • n1 -ge n2 大于等于
  • n1 -lt n2 小于
  • n1 -le n2 小于等于
  • n1 -ne n2 不等于

字符串比较

  • str1 == str2 str1和str2字符串内容一致
  • str1 != str2 str1和str2字符串内容不一致,!表示相反的意思

实践 判断字符是否内容一致

root@ubuntu:~# [ a == a ]
root@ubuntu:~# echo $?
0
root@ubuntu:~# [ a != a ]
root@ubuntu:~# echo $?
1

3.1.2 逻辑表达式

逻辑表达式一般用于判断多个条件之间的依赖关系。 常见的逻辑表达式有:

  • &&
  • ||
    &&符号
    命令1 && 命令2
    如果命令1执行成功,那么执行命令2
    如果命令1执行失败,那么不执行命令2
    示例:
    [ 1 = 1 ] && echo "条件成立"
    条件成立
    [ 1 = 2 ] && echo "条件成立"
    
    ||符号
    命令1 || 命令2
    1 如果命令1执行成功,那么不执行命令2
    2 如果命令1执行失败,那么执行命令2
    示例:
    [ 1 = 2 ] || echo "条件不成立"
    条件不成立
    [ 1 = 1 ] || echo "条件不成立"
    

3.1.3 文件表达式

-f 判断输入内容是否是一个文件

示例:

[ -f weizhi.sh ] && echo "是一个文件"
是一个文件
[ -f weizhi.sddh ] || echo "不是一个文件"
不是一个文件
-d 判断输入内容是否是一个目录

示例:

[ -d weizhi.sddh ] || echo "不是一个目录"
不是一个目录
mkdir nihao
[ -d nihao ] && echo "是一个目录"
是一个目录
-x 判断输入内容是否可执行

示例:

[ -x age.sh ] || echo "文件没有执行权限"
文件没有执行权限
[ -x test.sh ] && echo "文件有执行权限"
文件有执行权限

3.1.4 计算表达式

定义:

计算表达式,简单来说就是对具体的内容进行算数计算

格式:
  • $(( 计算表达式 ))
  • let 计算表达式
    注意:
    $(())中只能用+-*/和()运算符,并且只能做整数运算
    
$(())使用示例
root@ubuntu:~# n=100
root@ubuntu:~# echo $(($n/5))
20
let使用示例
root@ubuntu:~# i=1
root@ubuntu:~# let i=i+7
root@ubuntu:~# echo $i
8
注意:

表达式必须是一个整体,中间不能出现空格等特殊字符

3.1小结:

  1. 了解 常用的两种测试语句
  2. 掌握 标准测试语句的格式和特点
  3. 说出 常用条件表达式种类
  4. 掌握 2种逻辑表达式的特点和使用场景
  5. 掌握 3种文件表达式的特点和使用场景
  6. 了解 4种数字表达式和2种字符串表达式的特点和使用场景
  7. 应用 2种计算表达式